<?php


namespace app\framework;


class Http{

    // +-----------------------------------------------------------------------------------------------
    // | CURL是一个非常强大的开源库，支持很多协议，包括HTTP、FTP、TELNET等。
    // | 可以通过灵活的选项设置不同的HTTP协议参数，并且支持HTTPS。
    // | CURL可以根据URL前缀是“HTTP” 还是“HTTPS”自动选择是否加密发送内容。
    // | 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤：
    // |    1.初始化连接句柄；
    // |    2.设置CURL选项；
    // |    3.执行并获取结果；
    // |    4.释放CURL连接句柄。
    // +-----------------------------------------------------------------------------------------------

    /**
     * @param $url                  访问地址
     * @param string $post          post数据(不填则为GET)
     * @param string $cookie       提交的$cookies
     * @param int $returnCookie    是否返回$cookies
     * @return bool|string
     */
     public static function curl_request($url,$post = '',$cookie = '', $returnCookie = 0){
         // 1.初始化
         $curl = curl_init();
         // 2.设置选项
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
        curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
        if($post) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
        }
        if($cookie) {
            curl_setopt($curl, CURLOPT_COOKIE, $cookie);
        }
        curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
         // 关闭SSL验证
         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);

         // 3.执行
        $data = curl_exec($curl);
        if (curl_errno($curl)) {
            return curl_error($curl);
        }
        // 4.释放资源并返回结果
        curl_close($curl);
        if($returnCookie){
            list($header, $body) = explode("\r\n\r\n", $data, 2);
            preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
            $info['cookie']  = substr($matches[1][0], 1);
            $info['content'] = $body;
            return $info;
        }else{
            return $data;
        }
    }
}